package lp2.projeto;
//bernard lenin costa da silva

import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;

public class TesteMusica {
	private Musica musica1,musica2;
	
	@Before
	public void criarObjeto()throws Exception{
		musica1 = new Musica("numb","meteora", "linkin park", "rock", 1998);
		musica2 = new Musica("point","live", "linkin", "rock", 2003);
		
	}
	
	@Test
	public void testaCriarMusica() {
		try{
			musica1 = new Musica("numb","meteora", "linkin park", "rock", 1998);
		}catch(Exception e){
			Assert.assertEquals("Mensagem errada", "Parametro invalido.", e.getMessage());
		}
		
		try{
			musica1 = new Musica("","meteora", "linkin park", "rock", 1998);
		}catch(Exception e){
			Assert.assertEquals("Mensagem errada", "Parametro invalido.", e.getMessage());
		}
		
		try{
			musica1 = new Musica("numb","", "linkin park", "rock", 1998);
		}catch(Exception e){
			Assert.assertEquals("Mensagem errada", "Parametro invalido.", e.getMessage());
		}
		
		try{
			musica1 = new Musica("numb","meteora", "", "rock", 1998);
		}catch(Exception e){
			Assert.assertEquals("Mensagem errada", "Parametro invalido.", e.getMessage());
		}
		
		try{
			musica1 = new Musica("numb","meteora", "linkin park", "", 1998);
		}catch(Exception e){
			Assert.assertEquals("Mensagem errada", "Parametro invalido.", e.getMessage());
		}
		
		try{
			musica1 = new Musica("numb","meteora", "linkin park", "rock", -1);
			Assert.fail("Esperava excecao ano abaixo de zero");
		}catch(Exception e){
			Assert.assertEquals("Mensagem errada", "Entrada invalida ano de gravacao menor que zero. ", e.getMessage());
		}
		
		
		
	}
	
	@Test
	public void testarGetTitulo(){
		Assert.assertEquals("numb", musica1.getTitulo());
		Assert.assertEquals("point", musica2.getTitulo());
		
		
	}
	
	@Test
	public void testarGetAlbum(){
		Assert.assertEquals("meteora", musica1.getAlbum());
		Assert.assertEquals("live", musica2.getAlbum());
			
		
	}
	
	@Test
	public void testarGetAutor(){
		Assert.assertEquals("linkin park", musica1.getNomeArtista());
		Assert.assertEquals("linkin", musica2.getNomeArtista());
		
		
	}
	
	@Test
	public void testarGetGenero(){
		Assert.assertEquals("rock", musica1.getGenero());
		Assert.assertEquals("rock", musica2.getGenero());
	}
	
	@Test
	public void testarGetAnoLancamento() throws Exception{
		Assert.assertEquals(1998, musica1.getAnoGravacao());
		Assert.assertEquals(2003, musica2.getAnoGravacao());
		
		
	}
		
	
	
	@Test
	public void testarTocarMusica(){
		Assert.assertEquals("musica reproduzida.", musica1.tocarMusica("point of view"));
		
	}
	
	@Test
	public void testarToString(){
		Assert.assertEquals(musica1.getTitulo()+" : "+musica1.getAlbum()+" : "+musica1.getNomeArtista()+" : "+musica1.getGenero()+" : "+musica1.getAnoGravacao(), musica1.toString());
		
	}
	
	
	

}
